package io.fatmore.web.interceptor;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * 为了重放request body
 * <b><code>MyRequestFilter</code></b>
 * <p>
 * 
 * </p>
 * <b>Creation Time:</b> 2016年9月13日 下午4:44:02
 * @author shangkun.lsk@fastmor.com
 * @since ucun-finance
 */
@WebFilter(urlPatterns = "/*")
public class ApiRequestFilter implements Filter {
	@Override
	public void destroy() {

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

		ServletRequest requestWrapper = null;
		if (request instanceof HttpServletRequest) {
			HttpServletRequest httpServletRequest = (HttpServletRequest) request;
			if ("POST".equals(httpServletRequest.getMethod().toUpperCase())) {
				requestWrapper = new ApiRequestWrapper((HttpServletRequest) request);
			}
		}

		if (requestWrapper == null) {
			chain.doFilter(request, response);
		} else {
			chain.doFilter(requestWrapper, response); //替换！
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {

	}

}
